문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 블록런처/ModPE 개발 (문단 편집) === 네이티브 함수 === Rhino Javascript Engine을 거치지 않고, 직접 JNI 함수로 접근하여 사용하는 함수이다. Rhino에서 Java 함수를 직접 호출하는 기능을 이용한 것이며, JNI를 사용하므로 BlockLauncher의 Java 클래스의 함수명을 사용하면 된다. [* 당연히 MCPE 마스터와 ToolBox에서는 사용할 수 없다. 단, 툴박스에서는 예외적으로 callScriptMethod(); 사용 가능.] 블록런처 1.12.2를 기준으로 덤프한 것이다. 최신버전은 아니지만 참고 하고 싶은 사람은 [[https://github.com/zhuowei/MCPELauncher/blob/master/src/net/zhuoweizhang/mcpelauncher/ScriptManager.java|여기]]에서 참고해도 좋다. 블록런처 1.8.6[* 마인크래프트 pe 0.10.5를 지원하는 가장 높은 버전의 블록런처]의 소스로 추정된다. 앞에다가 폴더 경로와 클래스명(.java 파일의 이름)을 붙여서 사용하면 된다. nativeSetTile();을 예로 들자면 net.zhuoweizhang.mcpelauncher.ScriptManager.nativeSetTile();과 같이 사용하면 되며, 아래에는 프로토타입으로만 적어놓았다. * int nativeGetBrightness(int, int, int); * void nativeBlockSetStepSound(int, int); * void nativePlayerAddExperience(int); * void initJustLoadedScript(org.mozilla.javascript.Context, org.mozilla.javascript.Script, java.lang.String); * String nativeEntityGetNameTag(long); * int nativeLevelGetDifficulty(); * int nativePlayerGetScore(); * void continueDestroyBlockCallback(int, int, int, int, float); * int nativeBlockGetSecondPart(int, int, int, int); * int nativeGetSlotInventory(int, int); * boolean nativeEntityHasCustomSkin(long); * int nativeItemGetUseAnimation(int); * void nativeGetAllEntities(); * String nativeBiomeIdToName(int); * void nativeShowProgressScreen(); * void handleChatPacketCallback(java.lang.String); * void nativeExplode(float, float, float, float, boolean); * boolean nativeIsSneaking(long); * float nativePlayerGetExhaustion(); * void nativeDestroyBlock(int, int, int); * void nativeItemSetUseAnimation(int, int); * float nativeGetYaw(long); * void nativeSetSneaking(long, boolean); * void nativeAddFurnaceRecipe(int, int, int); * void nativeAddShapedRecipe(int, int, int, java.lang.String[], int[]); * void nativeSetMobHealth(long, int); * void nativeMobAddEffect(long, int, int, int, boolean, boolean); * long nativeGetLevel(); * int nativeGetData(int, int, int); * void nativeSetGameType(int); * boolean nativePlayerIsFlying(); * void nativeHurtTo(int); * void removeScript(java.lang.String); * void nativeSetSelectedSlotId(int); * float nativeLevelGetRainLevel(); * String nativeGetItemName(int, int, boolean); * boolean nativePlayerEnchant(int, int, int); * float nativePlayerGetExperience(); * void nativePlayerSetItemCustomName(int, java.lang.String); * void setupContext(org.mozilla.javascript.Context); * void nativeMobSetArmorCustomName(long, int, java.lang.String); * void nativeBlockSetExplosionResistance(int, float); * Set getEnabledScripts(); * void nativeSetExitEnabled(boolean); * void nativeBlockSetCollisionEnabled(int, boolean); * void nativeSetVel(long, float, int); * boolean reimportIfPossible(java.io.File); * void nativeExtinguishFire(int, int, int, int); * void nativePlayerSetHunger(long, float); * void nativeSetOnFire(long, int); * long nativeSpawnEntity(float, float, float, int, java.lang.String); * int nativeGetItemMaxDamage(int); * float nativeGetPitch(long); * void blockEventCallback(int, int, int, int, int); * int nativePlayerGetLevel(); * void nativeSetCameraEntity(long); * void removeDeadEntries(java.util.Collection); * ScriptableObject classConstantsToJSObject(java.lang.Class); * int nativeEntityGetRider(long); * void nativePlayerSetExperience(float); * int nativeGetAnimalAge(long); * void nativeSetFov(float, boolean); * boolean nativeIsValidItem(int); * void chatCallback(java.lang.String); * void nativeBlockSetRedstoneConsumer(int, boolean); * void levelEventCallback(int, int, int, int, int, int); * void nativeLevelSetBiome(int, int, int); * void nativeLeaveGame(boolean); * void nativeArmorAddQueuedTextures(); * long nativePlayerGetPointedEntity(); * File getScriptFile(java.lang.String); * long nativeGetTime(); * int nativeGetCarriedItem(int); * String nativeGetSignText(int, int, int, int); * void nativeBlockSetShape(int, float, float, float, float, float, float, int); * void nativeClientMessage(java.lang.String); * void nativeRecipeSetAnyAuxValue(int, boolean); * void nativeSetBlockRenderShape(int, int); * void nativeSpawnerSetEntityType(int, int, int, int); * void nativeSetGameSpeed(float); * int nativeGetArch(); * void loadScriptFromInstance(org.mozilla.javascript.Script, java.lang.String); * void nativeAddItemFurnace(int, int, int, int, int, int, int); * void init(android.content.Context); * void nativeModPESetRenderDebug(boolean); * String nativeGetLanguageName(); * int nativePlayerGetDimension(); * void nativeDefineBlock(int, java.lang.String, java.lang.String[], int[], int, boolean, int, int); * void clearTextureOverrides(); * void nativeLevelSetLightningLevel(float); * void nativeSetSignText(int, int, int, int, java.lang.String); * void setLevelCallback(boolean, boolean); * int nativeGetTile(int, int, int); * void startDestroyBlockCallback(int, int, int, int); * void nativePlayerSetSaturation(float); * void nativeSetI18NString(java.lang.String, java.lang.String); * boolean nativeIsValidCommand(java.lang.String); * TextureRequests expandTexturesArray(java.lang.Object); * String nativeGetI18NString(java.lang.String); * void nativeAddItemChest(int, int, int, int, int, int, int); * void nativeSetMobSkin(long, java.lang.String); * void useItemOnCallback(int, int, int, int, int, int, int, int); * void nativeZombieSetBaby(long, boolean); * int nativeLevelGetBiome(int, int); * void destroy(); * void nativeRideAnimal(long, long); * int nativePlayerGetPointedBlock(int); * void takeScreenshot(java.lang.String); * void nativeBlockSetDestroyTime(int, float); * void nativeModPESetDesktopGui(boolean); * void nativeSetNightMode(boolean); * void nativePlayerSetCanFly(boolean); * String nativeLevelGetBiomeName(int, int); * void entityRemovedCallback(long); * void nativeRemoveItemBackground(); * void nativeLevelSetGrassColor(int, int, int); * void nativeSetCape(long, java.lang.String); * void tickCallback(); * InputStream getSoundInputStream(java.lang.String, long[]); * void nativeSetPosition(long, float, float, float); * void destroyBlockCallback(int, int, int, int); * void nativeAddItemInventory(int, int, int); * void nativeBlockSetLightOpacity(int, int); * void nativeBlockSetFriction(int, float); * void processDebugCommand(java.lang.String); * void nativeDefineItem(int, java.lang.String, int, java.lang.String, int); * void nativeDumpVtable(java.lang.String, int); * int nativeGetMobMaxHealth(long); * void nativeSetMobMaxHealth(long, int); * void nativeSetAllowEnchantments(int, int, int); * String nativeGetItemNameChest(int, int, int, int); * void nativeSetTextParseColorCodes(boolean); * void explodeCallback(long, float, float, float, float, boolean); * int nativeGetMobHealth(long); * float nativeLevelGetLightningLevel(); * int nativeGetItemCountFurnace(int, int, int, int); * int nativeGetEntityTypeId(long); * void nativeRemoveEntity(long); * void reloadScript(java.io.File); * int nativeMobGetArmor(long, int, int); * float nativePlayerGetPointedVec(int); * void nativeAddItemCreativeInv(int, int, int); * void attackCallback(long, long); * int nativeEntityGetRenderType(long); * String nativePlayerGetItemCustomName(int); * void nativeSetIsRecording(boolean); * void nativeEntitySetTarget(long, long); * void nativeSendChat(java.lang.String); * void nativeForceCrash(); * int nativeGetItemEntityItem(long, int); * void nativePlayerSetExhaustion(float); * boolean nativeItemSetProperties(int, java.lang.String); * void nativeShowTipMessage(java.lang.String); * void nativeSetStonecutterItem(int, int); * int nativeGetSelectedSlotId(); * void nativeMobSetArmor(long, int, int, int); * void dummyThrowableHitEntityCallback(); * void setLevelFakeCallback(boolean, boolean); * File getOriginalFile(java.io.File); * void mobDieCallback(long, long); * int nativeGetItemCountChest(int, int, int, int); * void frameCallback(); * void entityAddedCallback(long); * int nativeEntityGetRiding(long); * long nativeEntityGetTarget(long); * void nativeClearSlotInventory(int); * void nativeBlockSetLightLevel(int, int); * int nativeGetGameType(); * boolean nativePlayerCanFly(); * void nativeScreenChooserSetScreen(int); * String nativeGetPlayerName(long); * void nativeSetRot(long, float, float); * String nativeMobGetArmorCustomName(long, int); * void nativeLevelSetRainLevel(float); * void nativeSetInventorySlot(int, int, int, int); * float nativeBlockGetDestroyTime(int, int); * void nativeSetUseController(boolean); * int nativeGetItemFurnace(int, int, int, int); * void nativePlayerSetFlying(boolean); * File getTextureOverrideFile(java.lang.String); * boolean nativeGetTextureCoordinatesForBlock(int, int, int, float[]); * float nativeGetEntityLoc(long, int); * void nativeEntitySetSize(long, float, float); * void loadEnabledScriptsNames(android.content.Context); * void nativePlaySound(float, float, float, java.lang.String, float, float); * long nativeGetPlayerEnt(); * void callScriptMethod(java.lang.String, java.lang.Object[]); * int nativeGetItemDataChest(int, int, int, int); * void nativeSetupHooks(int); * void runOnMainThread(java.lang.Runnable); * void nativeLevelAddParticle(int, float, float, float, float, float, float, int); * void nativeClearCapes(); * void loadScript(java.io.Reader, java.lang.String); * float nativePlayerGetHunger(long); * String getAllApiMethodsDescriptions(); * String nativeEntityGetMobSkin(long); * void nativeMobRemoveEffect(long, int); * void nativeRequestFrameCallback(); * void nativeSetItemNameChest(int, int, int, int, java.lang.String); * int nativeSpawnerGetEntityType(int, int, int); * void nativePrePatch(boolean, com.mojang.minecraftpe.MainActivity, boolean); * void requestGraphicsReset(); * float nativeGetEntityVel(long, int); * void setEnabledWithoutLoad(java.io.File, boolean); * int nativeGetItemDataFurnace(int, int, int, int); * void nativeBlockSetColor(int, int[]); * void nativeDefineArmor(int, java.lang.String, int, java.lang.String, java.lang.String, int, int, int); * void nativeItemSetStackedByData(int, boolean); * JSONObject getOriginalLocations(); * void nativeSetPositionRelative(long, float, float, float); * int nativeLevelGetGrassColor(int, int); * long nativeDropItem(float, float, float, float, int, int, int); * void nativeBlockSetRenderLayer(int, int); * boolean isEnabled(java.io.File); * void nativeSetItemMaxDamage(int, int); * void nativePreventDefault(); * void throwableHitCallback(long, int, int, int, int, int, float, float, float, long); * void nativeSelectLevel(java.lang.String, java.lang.String); * float nativeBlockGetFriction(int); * void nativeSetAnimalAge(long, int); * void redstoneUpdateCallback(int, int, int, int, boolean, int, int); * void nativeLevelSetDifficulty(int); * void nativeSetTime(long); * void nativeCloseScreen(); * void setOriginalLocation(java.io.File, java.io.File); * void nativeDefinePlaceholderBlocks(); * boolean nativeGetTextureCoordinatesForItem(int, int, float[]); * void nativeSetCarriedItem(long, int, int, int); * int nativeGetBlockRenderShape(int); * int nativeGetItemChest(int, int, int, int); * void setEnabled(java.io.File, boolean); * int nativeGetItemIdCount(); * void nativeEntitySetImmobile(long, boolean); * void nativeSetSpawn(int, int, int); * void nativeSetTile(int, int, int, int, int); * void nativeSetItemCategory(int, int, int); * void reportScriptError(net.zhuoweizhang.mcpelauncher.ScriptManager$ScriptState, java.lang.Throwable); * boolean nativeLevelIsRemote(); * void nativeSetHandEquipped(int, boolean); * boolean nativeLevelCanSeeSky(int, int, int); * float nativeGetPlayerLoc(int); * void nativePlayerSetLevel(int); * boolean nativeZombieIsBaby(long); * void eatCallback(int, float); * boolean nativeSetEntityRenderType(long, int); * void nativeMobRemoveAllEffects(long); * void nativeOnGraphicsReset(); * void nativeJoinServer(java.lang.String, int); * void nativeEntitySetNameTag(long, java.lang.String); * float nativePlayerGetSaturation(); --뭔지 모르는건 알아서 실험해보기 바란다.-- --악용될 수 있는 함수들의 접근 지정자가 전부 public에서 private로 바뀌어서, 더 이상 접근할 수도 없고, 목록에 나오지 않는다. 목록에 뜨지 않는 것은 디컴파일[* [[컴파일]]의 반대과정. 기계어를 프로그래밍 언어로 바꾸는 작업이다.]을 하면 알 수 있다.--저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기